/*
 * Killocan 2013
 * http://killocan.blogspot.com
*/

#pragma once

#include <string>
#include <vector>
//#include <list>

#include "scenesoundmanager.h"

class Stage;
class Camera;
class Character;
class Player;
class WeaponMenu;

class StageManager
{
  public:
  	StageManager();
  	virtual ~StageManager();

    virtual void setupStage();
    virtual void doStageSpecifics();
  	void play();

  	virtual const std::string & getStageFilePath() const;

  protected:
    virtual SceneSoundManager * CreateSoundManager();
    SceneSoundManager * ssm;
    std::string STAGE_PATH;
    std::vector<Character *> characters_vec;
//    std::list<Character *>   temp_characters_lst;

    Stage  * stage;

  private:
    void doMegamanSpawning(BITMAP * buffer, FONT * mm_font);
    void handlePlayer();
    //void doDraw();
    void checkColissionAgainstEnemy();
    void checkColissionPlayerEnemyBullets();

    bool game_pause;
    bool weapon_menu;

    BITMAP * m_buffer;

  	Camera * camera;
  	Player * player;

    WeaponMenu * weaponMenu;
};
